package ma.ac.onousc.gestionfi.budget.model.DAO.DAOBean;

import java.util.List;

import javax.ejb.Stateless;
import javax.ejb.TransactionAttribute;
import javax.ejb.TransactionAttributeType;

import ma.ac.onousc.gestionfi.budget.model.ProgrammeEmploi;
import ma.ac.onousc.gestionfi.budget.model.TypeBudget;
import ma.ac.onousc.gestionfi.budget.model.DAO.ProgrammeEmploiDAO;

@Stateless
@TransactionAttribute(TransactionAttributeType.SUPPORTS)
/**
 * 
 * @author MEnnahdi
 *
 */
public class ProgrammeEmploiDAOBean extends
		GenericEJB3Bean<ProgrammeEmploi, Integer> implements ProgrammeEmploiDAO {

	@SuppressWarnings("unchecked")
	@Override
	public List<ProgrammeEmploi> findAllProgrammeEmploi() {
		return this.getEntityManager()
				.createNamedQuery("ProgrammeEmploi.findAll").getResultList();
	}

	@SuppressWarnings("unchecked")
	@Override
	public ProgrammeEmploi findByAnneeAndTypeBudget(int annee, TypeBudget tb) {
		List<Object> liste = this.getEntityManager()
				.createNamedQuery("ProgrammeEmploi.findByAnneeAndTypeBudget")
				.setParameter("ANNEE", annee).setParameter("TYPE_BUDGET", tb)
				.getResultList();
		if (liste.size() > 0) {
			return (ProgrammeEmploi) liste.get(0);
		} else {
			return null;
		}
	}

	@SuppressWarnings("unchecked")
	public List<Integer> findAnnee() {

		return this.getEntityManager()
				.createNamedQuery("ProgrammeEmploi.findAnnee").getResultList();

	}

	@SuppressWarnings("unchecked")
	@Override
	public ProgrammeEmploi findByIdPro(int id) {

		List<Object> liste = this.getEntityManager()
				.createNamedQuery("ProgrammeEmploi.findById")
				.setParameter("ID", id).getResultList();
		if (liste.size() > 0) {
			return (ProgrammeEmploi) liste.get(0);
		} else {
			return null;
		}
	}

	@SuppressWarnings("unchecked")
	@Override
	public List<ProgrammeEmploi> findAllFonc() {

		return this.getEntityManager()
				.createNamedQuery("ProgrammeEmploi.findAllFonc")
				.getResultList();
	}

	@Override
	public boolean isCloture(ProgrammeEmploi programmeEmploi) {
		return ((ProgrammeEmploi) this
				.getEntityManager()
				.createNamedQuery("ProgrammeEmploi.isCloture")
				.setParameter("PROGRAMME_EMPLOI",
						programmeEmploi.getIdProgrammeEmploi()).getResultList()
				.get(0)).isCloturerProgrammeEmploi();
	}

	@SuppressWarnings("unchecked")
	@Override
	public int findAnneeMaxFonc() {
		

		List<Integer> anneeMax = this.getEntityManager()
				.createNamedQuery("ProgrammeEmploi.findAnneeMaxFonc")
				.getResultList();
		if (anneeMax.size() > 0) {
			return (Integer) anneeMax.get(0);
		} else {
			return 0;
		}

	}

}